home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 4 / ETO Development Tools 4.iso / Tools - Objects / SourceBug / 1.0b1 Release Notes next >
Text File  |  1991-05-09  |  19KB  |  470 lines

  1. SourceBug 1.0b1 Release Notes
  2. Mike Lockwood
  3. April 8, 1991
  4.  
  5.  
  6. SourceBug is now feature frozen for the Beta release on the May E.T.O.  Further 
  7. minor enhancements and improvements may occur after the Beta release.  
  8. Major enhancements will be postponed until after SourceBug 1.0 final is released.
  9.  
  10.  
  11. SourceBug 1.0b1 is compatible with MPW 3.2 (from either the E.T.O #1 or E.T.O #2)
  12. CDs, or MPW 3.2b6).  SourceBug requires System 6.0.X with MultiFinder 6.1b9, or System 7.0b4 or
  13. later.  System 7.0b5 or later is recommended if available, since there are some
  14. annoying bugs in 7.0b4 (mainly, lost activate events, and a crash when stepping over SFGetFile).
  15. SourceBug will not work with releases of System 7 before 7.0b4.
  16.  
  17.  
  18.  
  19.  
  20. 1.0b1 Changes
  21.  
  22. •    SourceBug now detects and corrects for PascalObjects mistakenly described
  23.     as C++ pointer-based objects in the Sym File.  This problem occurs 
  24.     frequently in MacApp 3.0, due to forward references of classes in the
  25.     MacApp header files.
  26.     
  27. •    Removed an improper assumption about the existence of Color QuickDraw.
  28.     SourceBug will now run on the Plus, SE, Classic, and Portable!
  29.     
  30. •    Reenabled the code that evaluates variables that reside in 68881/68882
  31.     data registers (FP0 - FP7).  Do not use SourceBug with System 7.0b4 or 
  32.     7.0b5 if you want to use this feature.  There were some problems with the 
  33.     Process Manager that weren't fixed until 7.0b6.
  34.     
  35. •    The floating point data registers were moved to a separate window, since
  36.     many programmers don't use them.
  37.  
  38. •    Fixed another bug that caused TRAP #5 (breakpoint) instructions to appear
  39.     in the disassembly.
  40.     
  41.     
  42. 1.0d31 Changes
  43.  
  44. •    Fixed a bug that caused SourceBug to crash when handling a crash in 
  45.     another program.
  46.  
  47. •    Increased preferred size in 'SIZE' resource from 2000K to 2500K.  
  48.     This was done because debugging MacApp 3.0 require more memory, and this
  49.     release is intended for distibution with MacApp 3.0a1.
  50.  
  51.  
  52. 1.0d30 Changes
  53.  
  54. •    Added support for evaluating local variables located in FPU registers, and added the
  55.     FPU data registers FP0 - FP7 to the registers window.  However, this was disabled in
  56.     1.0d30 due a bug in the 7.0b5 Process Manager.
  57.     
  58. •    The status register is now displayed in the Registers Window as five check boxes.
  59.     This allows much easier manipulation of the 'X', 'N', 'Z', 'V', and 'C' bits in the CCR.
  60.     Messing with the supervisor or trace bits is no longer allowed.
  61.     
  62. •    Fixed a bug introduced in 1.0d29 that kept the %?Anon unit and anonymous modules such as
  63.     glue code from being displayed in the Browser Window.  
  64.  
  65. •    SourceBug now handles out-of-date source files differently.  The user is now given the 
  66.     choice of:
  67.          1) Using the source anyway, even though the modification date does not match the symbolics,
  68.          2) Viewing assembler only, or
  69.          3) Locating the correct version of the source.
  70.          
  71. •    Reenabled the "View as Str255" option for StringHandles.  This was inadvertantly disabled
  72.     in 1.0d29.
  73.     
  74. •    Fixed the evaluation of TLists and TSortedLists in MacApp 3.0.  The elements of a TList
  75.     should now be visible.
  76.     
  77. •    Sped up the drawing of the text in Code Views.
  78.  
  79. •    Fixed some breakpoint related bugs that were introduced while rewriting some of the 
  80.     breakpoint code between 1.0d28 and 1.0d29.  These bugs in 1.0d29 sometimes resulted in:
  81.         1) crashes when the target application was terminated,
  82.         2) breakpoints not being reenabled when resuming an application, and
  83.         3) TRAP #5 instructions (breakpoints) showing up in disassembled code.
  84.         
  85.  
  86.  
  87. 1.0d29 Changes
  88.  
  89. •    Fixed a bug that caused occasional crashes when setting breakpoints.
  90.  
  91. •    Made a minor change to the inspector hooks so the "New Inspector Window"
  92.     command works with MacApp 3.0d10.
  93.     
  94. •    Added the "View as Fixed" and "View as Fract" options.
  95.  
  96. •    Added support for the new "SysBreak", "SysBreakStr", and "SysBreakFunc"
  97.     traps defined in Types.h.
  98.  
  99. •    Improved handling of SysErrors.  SourceBug is now able to display a stack crawl
  100.     from the point at which SysError was called.  A call to SysError no longer
  101.     automatically terminates the target application.
  102.     
  103. •    Breakpoints are now displayed with 12 pixel icons.  This change was made so
  104.     two breakpoints in a row do not overlap when drawn on the side of the code view.
  105.  
  106. •    Fixed a problem that caused "View as Str255" not to work in certain cases.
  107.     In particular, you can now evaluate MacApp 3.0 Str255 classes by using 
  108.     "View as Str255" on the fStr field in the Str255 class.
  109.  
  110. •    Fixed another bug that caused the evaluation of register based shorts or
  111.     OSErrs to be wrong in certain cases.
  112.     
  113. •    Breakpoints are now removed when SourceBug is entered, and restored when the
  114.     target application is resumed.  This greatly simplifies disassembling code,
  115.     the stack crawl, and finding saved registers on the stack.  It also solves 
  116.     a problem killing MacApp 3.0 applications.  SourceBug 1.0d28 would crash due
  117.     to a reentrancy problem related to MacApp's _ExitToShell patch.
  118.  
  119. •    Fixed a problem that caused SourceBug to crash if the Sym file contained a 
  120.     garbage name for a module.
  121.     
  122. •    Rewrote the %_MethTables parsing code so it no longer relys on the ClassInfo
  123.     table.  This should solve the infamous "%_MethTables parsing error".
  124.     
  125. •    Fixed a bug that caused the program counter to be displayed one line ahead
  126.     when at statements that are only 2 bytes long (such as A-Traps without parameters).
  127.     
  128. •    Added better error handling when the prefs file is corrupted.  Old versions
  129.     would fail with a disk error on startup if the prefs file was corrupted.
  130.     
  131.  
  132.  
  133. 1.0d28 Changes
  134.  
  135. •    Reorganized some of SourceBug's internal data structures to optimize read-in
  136.     time.  SourceBug 1.0d28 takes less than half the time than earlier versions 
  137.     to open medium sized MacApp applications.
  138.     
  139. •    Refixed the problem that caused breakpoints and the program counter to be 
  140.     displayed on the wrong line when displaying assembler source.
  141.     
  142.  
  143. 1.0d27 Changes
  144.  
  145. •    Fixed a bug that caused the code view selection to be drawn improperly
  146.     when selecting and autoscrolling.
  147.     
  148. •    If the Sym file has the full path name for a source file, SourceBug now
  149.     uses only the file name for the source file.  This allows the developer
  150.     to debug her application on a different computer than the computer on
  151.     which it was built.
  152.  
  153. •    Fixed a bug that caused a crash when displaying large character arrays.
  154.  
  155. •    Fixed a bug that sometimes caused breakpoints set in source code to be
  156.     invisible when viewed in assembler.
  157.     
  158.  
  159. 1.0d26 Changes
  160.  
  161. •    When toggling between alphabetical and hierarchical listing of classes and
  162.     compilation units, the selected class or compilation unit is retained.
  163.  
  164. •    SourceBug now shows class names in variable views when displaying a handle
  165.     to another object.
  166.     
  167. •    SourceBug now reads the entire name and module tables of the Sym file 
  168.     before read time.  This results in a 20% - 40% cut in read in time.
  169.     These tables make up about 25% - 30% of the sym file.
  170.     
  171. •    Added "View As" options.  These allow you to display integers as decimals
  172.     or hexadecimals, and strings as either C-Strings or Pascal Strings.
  173.     Warning:  This feature has not been fully debugged!
  174.  
  175. •    Added clipboard support.  You can now copy the selected text in a code view
  176.     or the contents of a variable view to the clipboard.
  177.     
  178. •    Implemented the "Select All" command for code views.
  179.  
  180. •    Stopped using validMacsBugSymbol for reading class names from the 
  181.     %_MethTables segment.  validMacsBugSymbol was not always recognizing 
  182.     the class names as valid.
  183.     
  184.     
  185.  
  186. 1.0d25 Changes
  187.  
  188. •    Fixed a bug that was introduced as a side effect in 1.0d24.  
  189.     Clicking in the side view caused the breakpoint to be set one line above
  190.     where the user intended to set it.
  191.  
  192. •    Fixed another bug that occured when evaluating TLists.
  193.  
  194. •    Fixed a bug evaluating fields of objects in C++ code (such as evaluating
  195.     fDocument in the source for a TView method written in C++).
  196.  
  197.  
  198. 1.0d24 Changes
  199.  
  200. •    Added compilation units to the class list in the browser window.  
  201.     Now routines that are not classes of pascal-style objects are grouped
  202.     according to compilation unit.  (The compilation unit of a routine is
  203.     the pascal UNIT that contains it.  If a routine is not in a pascal UNIT,
  204.     the compilation unit is the source file that contains its implementation).
  205.     
  206. •    SourceBug now keeps a stack of places where it steps over JSRs.  This means
  207.     that if you step over a function call and hit a breakpoint while in the 
  208.     in the function you stepped over, you can execute the "Go" command and
  209.     you will stop again after the function call you were stepping over.  
  210.     Since SourceBug keeps these in a stack, SourceBug remembers multiple functions 
  211.     you are stepping over.
  212.     
  213. •    Fixed a bug that occured when evaluating TLists.
  214.  
  215. •    Modified the 'obit' AppleEvent handler to reflect changes in the 7.0b4
  216.     Process Manager
  217.     
  218. •    Made minor changes to the source so the SourceBug source code will compile 
  219.     with MPW 3.2b6
  220.  
  221. •    SourceBug now uses validMacsBugSymbol (from DisasmLookup.h) to read class 
  222.     names in the %_MethTables segment.  This routine provides better error 
  223.     checking than previous SourceBugs.
  224.     
  225. •    Added an failure message that will occur if the %_MethTables segment is invalid.
  226.  
  227. •    Fixed a bug that caused breakpoints and the PC to be displayed one line too
  228.     high in assembler source code.
  229.     
  230. •    Fixed a problem that occured when stepping over %_OBNEW calls
  231.  
  232. •    Disabled "Enter Low-level Debugger" when the pc is at a breakpoint.
  233.     The user is told to clear or step past the breakpoint before entering 
  234.     the low-level debugger.
  235.  
  236.  
  237. 1.0d23 Changes
  238.  
  239. •    Added support for handling SysErrors.
  240.  
  241. •    Fixed a bug that occured when evaluating TLists.
  242.  
  243.  
  244.  
  245. 1.0d22 Changes
  246.  
  247. •    Added support for evaluating local variables of routines further up in the 
  248.     stack crawl.  Evaluation of register-based locals further up the stack is
  249.     now possible in most cases
  250.  
  251. •    Removed several bugs that caused evaluation to be inaccurate.
  252.  
  253. •    Removed the AVL tree classes.  Performance testing showed they were only 
  254.     providing a 10% improvement in parse time and were significantly increasing
  255.     the size of many classes, increasing overall memory requirements.
  256.     A future version of SourceBug will use some other optimization techniques.
  257.  
  258. •    Object creation and deletion events are now cached so a shallow context
  259.     switch is not required each time an object is created or deleted.  1.0d21
  260.     was much slower than 1.0d19 or 1.0d20 because of this problem.
  261.  
  262. •    Fixed a bug that occasionally caused a crash when closing the browser window.
  263.  
  264.  
  265. 1.0d21 Changes
  266.  
  267. •    SourceBug now performs a shallow context switch when handling exceptions
  268.     (or breakpoints) in the target application.  The decision whether or not
  269.     to handle the exception is made in this state, since making this decision
  270.     may require some calculation that results in Memory Manager calls.
  271.  
  272.  
  273. 1.0d20 Changes
  274.  
  275. •    Modified low-level Process Manager interface code for 7.0b4 compatibility.
  276.  
  277. •    Reenabled support for System 7 Virtual Memory.  Debuggers now work with
  278.     VM under System 7.0b4.
  279.  
  280. •    Added the "Find Source for Code" feature, which displays the name of
  281.     the source file for the foremost code view.  This feature is useful when
  282.     you find a bug in a certain routine in the target application and need to
  283.     know which source file it is in so you can fix it!
  284.     
  285.         
  286. 1.0d19 Changes
  287.  
  288. •    Removed a bug that caused SourceBug to crash when it failed to read in 
  289.     the symbolics information for an application.
  290.     
  291. •    Removed a bug that caused SourceBug to crash when closing the browser window
  292.     (it seemed to occur only if an inspector window was open).
  293.     
  294. •    The inspector now shows 32 bit rather than 24 bit addresses in the instance
  295.     list pane.  This is helpful when running in 32-bit addressing on a Macintosh
  296.     with more than 16 meg of ram.
  297.         
  298. •    All object instances are now removed from the inspector when the target
  299.     application terminates.  Before, when relaunching an application, instances
  300.     from previous executions of the target application remained in the inspector.
  301.  
  302.  
  303.         
  304. 1.0d18 Changes
  305.  
  306. •    Fixed a bug that involved stepping into routines that caused a LoadSeg
  307.     call to get executed.  
  308.     
  309. •    Fixed a bug that limited the "Find Code for Selection" command to work 
  310.     only when the target application was running.
  311.  
  312.  
  313.  
  314. 1.0d16/1.0d17 Changes
  315.         
  316. •    Changed the icon to a picture of a SourceBug.  Since the application signature
  317.     has not changed, you may have to rebuild your desktop to see it.
  318.     Throw away old versions of MikesBug to avoid Desktop Manager confusion.
  319.     
  320. •    Added support for the "-model far" Linker option.  This includes:
  321.         1)     class ids can now be 4 bytes instead of 2 bytes (particularly
  322.             important in the inspector)
  323.         2)     the %_MethTables segment is in a different format
  324.         3)     Stepping over _LoadSeg calls when "stepping into" is a little different
  325.     Inspector support has not yet been tested under "-model far".
  326.  
  327. •    SourceBug now checks source file modification dates.  If it can't find a 
  328.     source file with the same modification date as in the Sym file, it asks 
  329.     the user to locate it.  This is particularly helpful if you have multiple
  330.     versions of your application or MacApp on your disk.
  331.     
  332. •    Breakpoints can be set and cleared by clicking on the side of a code view.
  333.     The "Set Breakpoint" and "Clear Breakpoint" menu items are gone.
  334.     
  335. •    Added support for evaluating floating point types.
  336.  
  337. •    Added support for evaluating constants.
  338.     
  339. •    Added the "Set Breakpoint at Failure" feature.
  340.  
  341. •    Added support for evaluating fields of a record within a pascal WITH statement
  342.  
  343. •    Added a real About Box.
  344.  
  345. •    Fixed some bugs that resulted in "???" being displayed as the top routine 
  346.     in the stack crawl.
  347.     
  348. •    Fixed a bug that caused the evaluation of pascal VAR parameters to be
  349.     inaccurate.
  350.     
  351. •    Added the "Evaluate…" feature.
  352.  
  353. •    Added the "Find Inherited" feature.
  354.  
  355. •    Fixed the bug that caused SourceBug to fail when launching the target application
  356.     a second time.
  357.     
  358. •    SourceBug now sends an 'oapp' AppleEvent when sublaunching the target application, 
  359.     if the target application has the "isHighLevelEventAware" flag set in its
  360.     'SIZE' resource.
  361.     
  362. •    Menu commands such as "Step" are now sent to the front code view, when 
  363.     a variable view or the registers window is in front.  
  364.     
  365. •    When evaluating a TList or a descendant of TList, the elements of the list
  366.     are now shown.  Double-clicking allows evaluation of the elements of a TList.
  367.  
  368. •    The inspector window now uses TSizerViews.
  369.  
  370. •    Fixed a bug that caused SourceBug to be very unreliable, but occured only
  371.     Under System 6.
  372.  
  373.  
  374. 1.0d15 Changes
  375.  
  376. •    Fixed a bug that caused MikesBug to crash when closing a window created
  377.     by spawning a code view (option-clicking in a code view and dragging).
  378.     
  379. •    Fixed some bugs related to debugging non-MacApp applications.
  380.  
  381. •    Added the "Find Code For…" feature.
  382.  
  383. •    Removed "Page Setup" and "Print" menu items, since printing is not supported
  384.  
  385.  
  386.  
  387. 1.0d11 - 1.0d14 Changes
  388.  
  389. •    MikesBug is now compatible with System 7.0b2.  (Older versions would not
  390.     work because the MultiFinder version number changed between 7.0b1 and 7.0b2.
  391.     MikesBug now checks SysEnvirons to see if System 7 is running, and only
  392.     checks the MultiFinder version if System 6 is running).
  393.     
  394. •    MikesBug will no longer run under System 7 virtual memory.  A bug in the
  395.     7.0b2 Process Manager causes MikesBug to crash at the first breakpoint if
  396.     VM is on.  For a long time, MikesBug has been appearing to run under 7.0b1
  397.     VM.  However, it turns out that the 7.0b1 Process Manager has a similar bug
  398.     that was causing the Mac to stay in supervisor mode after hitting the first
  399.     breakpoint!  Strangely, the System was able to operate in this state, and 
  400.     caused only occasional problems that, until now, I was unable to attribute
  401.     to the Process Manager.  MikesBug now refuses to run if VM is on.  
  402.     VM support will be reenabled when a new version of System 7 is released 
  403.     that supports debugging under VM.
  404.  
  405. •    The link map is no longer used by the debugger, so you
  406.     need not generate a link map when you compile your program.
  407.     
  408. •    Breakpoints can now be set and cleared by selecting cells
  409.     in a TGridView along the side of a code view.  Multiple
  410.     breakpoints can be selected by clicking while holding down
  411.     the Shift or Command modifier keys.
  412.     
  413. •    There is now a "Clear All BreakPoints" command.
  414.  
  415. •    The disassembler now displays offsets relative to the beginning
  416.     of the routine you are viewing and now shows routine names for
  417.     BSR and JSR instructions.
  418.  
  419. •    Windows now behave a little nicer when multiple monitors are installed.
  420.     If you drag the main browser window to a different monitor, the debugger
  421.     will "live" in that monitor, that is, all new windows will come up in that
  422.     monitor.
  423.     
  424. •    There have also been many internal changes that might not be visible to
  425.     the user.  A great deal of code has been rewritten to remove spaghetti and
  426.     make the debugger more maintainable and extensible.
  427.  
  428.  
  429.     
  430.     
  431. Known Problems
  432.  
  433. •    Support for 32-Bit Everything will probably break in the near future, since
  434.     there may be changes in its implementation.  SourceBug currently works with 
  435.     the MPW 3.2b6 implementation of 32-Bit everything.
  436.     
  437. •    Evaluation of certain types are not yet implemented.  
  438.     
  439. •    When viewing the source for the main PROGRAM module of an application 
  440.     written in Pascal (not MacApp), the entire file is displayed, including all
  441.     pascal procedures and functions declared in the PROGRAM scope.  This makes
  442.     it difficult to locate the beginning of the main PROGRAM module, so
  443.     it might make sense to display only the source between the BEGIN and
  444.     END statements for the main PROGRAM module.
  445.     
  446. •    Under System 7.0b4, the target application may not receive activate
  447.     events, causing the front window in the target application not to be active.
  448.     In MacApp, this may result in gTarget not being set to the main view of the
  449.     front window.  This does not happen under System 6 or System 7.0b5.
  450.     
  451. •    The disassembler does not show routine names for JSR and JMP instructions
  452.     if the target application was built using the "-model far" linker option.
  453.         
  454. •    Variable views are not always updated properly when their size changes 
  455.     (such as when they are changed to "Out of scope").
  456.     
  457. •    SourceBug does not check for the existence of a low-level debugger such as 
  458.     MacsBug or TMON before performing the "Enter low-level debugger" command.
  459.     
  460. •    The stack crawl does not show the name of routines with no LINK/UNLK instructions,
  461.     such as glue code.
  462.     
  463. •    SourceBug has not been tested with the "-wrap" linker option.  
  464.  
  465. •    SourceBug sometimes inadvertantly steps into glue code (such as code for 
  466.     unsigned long multiplication) that the user did not intend to step into.  
  467.     It is unclear how to handle this, since the user may sometimes want to 
  468.     step into code that do not have symbolic information.
  469.  
  470.